package com.itheima.filter;

import jakarta.servlet.*;
import jakarta.servlet.annotation.WebFilter;
import lombok.extern.slf4j.Slf4j;

import java.io.IOException;

/**
 * 过滤器链：设计模式-责任链模式
 */
@Slf4j
//@WebFilter("/*")
public class DemoFilter1 implements Filter {
    // 初始化方法。项目启动时执行，只执行一次
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
      log.info("初始化方法执行了...");
    }

    //过滤方法，每次请求都会先经过该方法
    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        log.info("过滤方法执行了...");
        log.info("放行前的逻辑...");
        //放行(继续往下执行，调用其他的过滤器或者controller)
        filterChain.doFilter(servletRequest, servletResponse);
        log.info("放行后的逻辑...");
    }

    // 销毁方法。项目停止时执行，只执行一次
    @Override
    public void destroy() {
        log.info("销毁方法执行了...");
    }
}
